package com.example.warehouse.sys.service;

import com.example.warehouse.common.pojo.vo.PageData;
import com.example.warehouse.sys.pojo.entity.SysUser;
import com.example.warehouse.sys.pojo.param.AddNewUserParam;
import com.example.warehouse.sys.pojo.param.SysUserStandardParam;
import com.example.warehouse.sys.pojo.param.UserLoginInfoParam;
import com.example.warehouse.sys.pojo.param.UserUpdateParam;
import com.example.warehouse.sys.pojo.vo.*;

import java.util.List;

public interface IUserService {

    //启用状态文本
    String ENABLE_TEXT[] = {"禁用", "启用"};

    //创建用户
    void addNew(AddNewUserParam addNewUserParam);

    //根据id删除用户
    void deleteById(Long id);


    //重置密码
    void updateByPassword(Long id);

    //编辑功能
    void updateBySysUser(SysUserStandardParam sysUserStandardParam);

    //个人中心信息修改
    void updateByPersonal(Long id,UserUpdateParam userUpdateParam);

    //启用用户
    void setEnable(Long id);

    //禁用用户
    void setDisable(Long id);

    //模糊查询
    List<UserCustomerStandardVO> queryByKeyWord(String deptName, String userName, String address);

    /**
     * 用户登录
     *
     * @param userLoginInfoParam 封装了登录信息的对象
     * @param remoteAddr         客户端的IP地址
     * @param userAgent          客户端的浏览器信息
     * @return 成功登录的用户的信息，包括：ID、用户名、头像、JWT等数据
     */
    UserLoginResultVO login(UserLoginInfoParam userLoginInfoParam, String remoteAddr, String userAgent);


    /**
     * 用户列表
     * @param pageNum:页码
     * @return
     */
    PageData<SysUserListItemVO> list(Integer pageNum);

    /**
     * 查询所有数据
     *
     */
    List<SysUser> selectAll();

    String selectNickenameById(Long id);

    UserPersonalVO selectById(Long id);

    void updatePasswordById(Long id, String password);
}
